﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
using transportsystem.DTO;
using transportsystem.BUS;
namespace transportsystem
{
    public partial class frmKhoHang : Form
    {
        DataTable dt,t;
        bool hideControls = true;
        int iIndex = 0;
        bool addNew = false;


        public frmKhoHang()
        {
            InitializeComponent();
        }
        void HideAddNew(bool value)
        {
            if (value == true)
                pnlAddNew.Visible = false;
            else
                pnlAddNew.Visible = true;
        }
        public void SetDataGridTitle()
        {
            string[] a = new string[4] { "Mã kho", "Tên kho", "Mô tả", "Mã nhân viên"};

            for (int i = 0; i < a.Count(); i++)
                dgv.Columns[i].HeaderText = a[i];
        }
        public void LoadData()
        {
            HideAddNew(hideControls);
            dt = KhoHangBUS.layDanhSachKhoHang();
            if (dt != null && dt.Rows.Count > 0)
                dgv.DataSource = dt;
            iIndex = 0;
            SetDataGridTitle();
            SetValueToControls();
        }

        private void frmKhoHang_Load(object sender, EventArgs e)
        {
            LoadData();
        }

        private void chkHideControls_CheckedChanged(object sender, EventArgs e)
        {
            hideControls = !hideControls;
            HideAddNew(hideControls);
        }
        public void SetValueToControls()
        {
            if (dt.Rows.Count > 0)
            {

                txtMaKho.Text = dt.Rows[iIndex]["makho"].ToString();
                txtTenKho.Text = dt.Rows[iIndex]["tenkho"].ToString();
                txtMotaKH.Text = dt.Rows[iIndex]["mota"].ToString();
                //txtMaNhanVien.Text = dt.Rows[iIndex]["manv"].ToString();
                layDanhSachNhanVien();
            }
        }

        private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            addNew = false;
            iIndex = e.RowIndex;
            SetValueToControls();
        }

        private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            addNew = false;
            iIndex = e.RowIndex;
            SetValueToControls();
            int ma = int.Parse(txtMaKho.Text);
            HienThiDanhSachHangTheoMa(ma);
        }
        public void SetDataGridTitleHang()
        {
            string[] a = new string[9] { "Mã hàng", "Tên hàng", "Người gửi", "Người nhận", "Ngày gủi", "Số điện thoại",  "Mã kho", "Số lượng", "Trọng lượng" };

            for (int i = 0; i < a.Count(); i++)
                dgvHang.Columns[i].HeaderText = a[i];
        }
        public void HienThiDanhSachHangTheoMa(int ma)
        {
            
            t = HangBUS.layDanhSachHangTheoMaKhoHang(ma);
            if (t != null && t.Rows.Count > 0)
            {
                dgvHang.DataSource = t;
                //SetDataGridTitleHang();
                iIndex = 0;
            }
            //iIndex = 0;

        }

        private void dgvHang_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            addNew = false;
            iIndex = e.RowIndex;
            SetValueToControlsHang();
        }
        public void SetValueToControlsHang()
        {
            if (t.Rows.Count > 0)
            {

                txtMaHang.Text = t.Rows[iIndex]["mahang"].ToString();
                txtTenHang.Text = t.Rows[iIndex]["tenhang"].ToString();
                //txtMaNguoiGui.Text = t.Rows[iIndex]["nguoigui"].ToString();
                LayDanhSachKhachHang();
                txtTenNguoiNhan.Text = t.Rows[iIndex]["nguoinhan"].ToString();
                txtSoDT.Text = t.Rows[iIndex]["sodt"].ToString();
                
                txtMaKhoHang.Text = t.Rows[iIndex]["makho"].ToString();
                txtSoLuong.Text = t.Rows[iIndex]["soluong"].ToString();
                txtTrongLuong.Text = t.Rows[iIndex]["trongluong"].ToString();
                dtp.Value = Convert.ToDateTime(t.Rows[iIndex]["ngaygui"].ToString());
            }

        }
        public void LayDanhSachKhachHang()
        {
            string a = "";
            SqlParameter[] sp = new SqlParameter[1];
            sp[0] = new SqlParameter("@tenkh", a);
            DataTable dtKhachHang = KhachHangBUS.getKhachHangList(sp);
            if (dtKhachHang != null && dtKhachHang.Rows.Count > 0)
            {
                cbNguoiGui.DataSource = dtKhachHang;
                cbNhanVien.SelectedValue = t.Rows[iIndex]["nguoigui"].ToString();
            }
        }
        private void dgvHang_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            addNew = false;
            iIndex = e.RowIndex;
            SetValueToControlsHang();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            //chkHideControls.Checked = true;
            hideControls = !chkHideControls.Checked;
            HideAddNew(hideControls);
            AddNewPrepair();
        }
        public void AddNewPrepair()
        {
            txtMaKho.Text = "";
            txtMotaKH.Text = "";
            txtTenKho.Text = "";
            //txtMaNhanVien.Text = "";

            addNew = true;
            
        }
        public void Save()
        {
            KhoHang kh = new KhoHang();
            if (addNew == false)
                kh.Makho = int.Parse(txtMaKho.Text);
            kh.Tenkho = txtTenKho.Text;
            kh.Mota = txtMotaKH.Text;
            kh.Manv = Convert.ToInt32(cbNhanVien.SelectedValue);

            bool kq = KhoHangBUS.capNhatKhoHang(kh);
            if (kq == true)
                MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
                MessageBox.Show("Có lỗi xảy ra! Vui lòng thử lại", "Thông báo", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
            LoadData();
            addNew = false;

        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            Save();
        }
        public void layDanhSachNhanVien()
        {
            string a="";            
            SqlParameter[] sp = new SqlParameter[1];
            sp[0] = new SqlParameter("@tennv", a);
            DataTable dtNhanVien = NhanVienBUS.getNhanVienList(sp);
            if (dtNhanVien != null && dtNhanVien.Rows.Count > 0)
            {
                cbNhanVien.DataSource = dtNhanVien;
                cbNhanVien.SelectedValue = dt.Rows[iIndex]["manv"].ToString();
            }
        }

        private void btnRemove_Click(object sender, EventArgs e)
        {
            if (addNew == false)
            {
                KhoHang kh = new KhoHang();
                kh.Makho = int.Parse(txtMaKho.Text.Trim());
                bool kq = KhoHangBUS.xoaKhoHang(kh);
                if (kq == true)
                    MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                    MessageBox.Show("Xóa hàng trong kho trước khi xóa kho hàng! ", "Thông báo", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                LoadData();
            }
        }

        private void btnAddHang_Click(object sender, EventArgs e)
        {
            chkHideControls.Checked = true;
            hideControls = !chkHideControls.Checked;
            HideAddNew(hideControls);
            AddNewPrepairHang();
        }

        private void AddNewPrepairHang()
        {
            txtMaHang.Text = "";
            txtTenHang.Text = "";
            txtTenNguoiNhan.Text = "";
            txtTrongLuong.Text = "";
            txtSoDT.Text = "";
            txtSoLuong.Text = "";
            txtMaKhoHang.Text = "";
            addNew = true;
        }

        private void btnEditHang_Click(object sender, EventArgs e)
        {
            SaveHang();
        }
        public void SaveHang()
        {
            Hang h = new Hang();            
            if (addNew == false)
                h.Mahang = int.Parse(txtMaHang.Text);
            h.Tenhang = txtTenHang.Text;
            h.Nguoigui = Convert.ToInt32(cbNguoiGui.SelectedValue);
            h.Nguoinhan = txtTenNguoiNhan.Text;
            h.Trongluong = float.Parse(txtTrongLuong.Text);
            h.Sodt = txtSoDT.Text;
            h.Soluong = int.Parse(txtSoLuong.Text);
            h.Makho = int.Parse(txtMaKhoHang.Text);
            h.Ngaygui = Convert.ToDateTime(dtp.Value);
                
            bool kq = HangBUS.capNhatHang(h);
            if (kq == true)
                MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
                MessageBox.Show("Có lỗi xảy ra! Vui lòng thử lại", "Thông báo", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
            int ma = int.Parse(txtMaKho.Text);
            HienThiDanhSachHangTheoMa(ma);
            addNew = false;
        }

        private void btnRemoveHang_Click(object sender, EventArgs e)
        {
            if (addNew == false)
            {
                Hang h = new Hang();
                h.Mahang = int.Parse(txtMaHang.Text.Trim());
                bool kq = HangBUS.xoaHang(h);
                if (kq == true)
                    MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                    MessageBox.Show("Xóa hàng trong kho trước khi xóa kho hàng! ", "Thông báo", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                int ma = int.Parse(txtMaKho.Text);
                HienThiDanhSachHangTheoMa(ma);
            }
        }

        private void btSearch_Click(object sender, EventArgs e)
        {
            string ten = txtSearchKhoHang.Text;
            DataTable dtTimKiem = KhoHangBUS.timKiemKhoHangTheoTen(ten);
            if (dtTimKiem != null && dtTimKiem.Rows.Count > 0)
                dgv.DataSource = dtTimKiem;
            iIndex = 0;
            //SetDataGridTitle();
            SetValueToControls();
        }

        private void btnSearchHang_Click(object sender, EventArgs e)
        {
            string ten = txtSearchHang.Text;
            DataTable dtTimKiemHang = HangBUS.timKiemHangTheoTen(ten);
            if (dtTimKiemHang != null && dtTimKiemHang.Rows.Count > 0)
                dgvHang.DataSource = dtTimKiemHang;
            iIndex = 0;
            //int ma = int.Parse(txtMaKho.Text);
            //HienThiDanhSachHangTheoMa(ma);
        }

        
    }
}
